package params

import (
	"mime/multipart"
	"net/url"
)

type PostVarCollection struct {
	Params map[string][]string
	Files  map[string][]*multipart.FileHeader
}

// Get 获取参数
func (p *PostVarCollection) Get(name string) *Variable {
	if value, ok := p.Params[name]; ok {
		return &Variable{Name: name, Value: value}
	}
	return nil
}

// All 获取所有参数
func (p *PostVarCollection) All() []*Variable {
	vars := make([]*Variable, 0)
	for name, value := range p.Params {
		vars = append(vars, &Variable{Name: name, Value: value})
	}
	return vars
}

// Has 判断参数是否存在
func (p *PostVarCollection) Has(name string) bool {
	return url.Values(p.Params).Has(name)
}

// Add 添加参数
func (p *PostVarCollection) Add(name string, value string) *PostVarCollection {
	url.Values(p.Params).Add(name, value)
	return p
}

// Set 设置参数
func (p *PostVarCollection) Set(name string, value string) *PostVarCollection {
	url.Values(p.Params).Set(name, value)
	return p
}

// Del 删除参数
func (p *PostVarCollection) Del(name string) *PostVarCollection {
	url.Values(p.Params).Del(name)
	return p
}

// 文件是否存在
func (p *PostVarCollection) HasFile(name string) bool {
	_, ok := p.Files[name]
	return ok
}

// 获取文件
func (p *PostVarCollection) GetFile(name string) *multipart.FileHeader {
	if value, ok := p.Files[name]; ok {
		return value[0]
	}
	return nil
}
